package com.yunxin.admin.system.domain.model.user;

import java.util.Collection;

/**
 * @author zero°
 * @since 2023-07-11
 */
public interface UserRepository {

    /**
     * 根据username 获取用户信息
     * @param userName userName
     * @return SysUserDO
     */
    UserSimple getUserSimpleByUsername(String userName);

    /**
     * 保存用户
     * @param user user
     * @param defaultEncryptPwd defaultEncryptPwd
     * @return userId
     */
    boolean saveUser(User user, String defaultEncryptPwd);

    /**
     * 更新用户
     * @param user user
     * @return userId
     */
    boolean updateUser(User user);

    /**
     * 根据id集合删除
     * @param ids ids
     * @return boolean
     */
    boolean removeByIdList(Collection<Long> ids);

    /**
     * 根据id更新用户状态
     * @param id id
     * @param status status
     * @return boolean
     */
    boolean updateStatus(Long id, Integer status);

    /**
     * 根据id更新用户密码
     * @param id id
     * @param password password
     * @return boolean
     */
    boolean updatePassword(Long id, String password);

    /**
     * 根据用户id修改用户角色
     * @param id
     * @param role
     */
    void updateUserRole(Long id, Integer role);
}
